闲扯
一段时间没做,斜率优化又快忘完了。。
题面
Solution
先推式子。
因为要乘上一个 $m^2$ ,所以我们要求的其实是:
由于 $sum^2,m$ 都是定值,所以我们只需要最小化 $\sum_{i=1}^mv_i^2$ 即可。
继续推式子。设 $dp_{i,j}$ 表示前 $i$ 个数,被分成 $j$ 段的最小值。
发现存在 $sum_i\cdot sum_j$ 这种同时包含 $i,j$ 的项,考虑上斜率优化。
将 $\min$ 拆开。
可以看做是一条斜率为 $2\cdot sum_i$ 的直线,我们要使纵截距最小。
可以发现斜率是递增的,而且因为维护最小,我们只需要维护一个下凸壳即可。
Code
1 |
|
总结
其实 $dp$ 数组是可以滚掉一维的,但是没必要,所以没写。反正都是套路,主要还是要把式子推出来。